#import <Foundation/Foundation.h>
#import "PersistentDataType.h"

/**
 * An SFUEvent is an object that represents a single event at SFU.
 *
 * Conforms to the PersistentDataType protocol.
 *
 * @author      James Lin
 * @version     0.6.6
 * @since       0.0.1
 * @see         PersistentDataType
 */
@interface SFUEvent : NSObject <PersistentDataType> {
	int       eventID;            // The event identifier
	NSString* eventHeading;       // The title of the event
	NSString* eventLocation;      // The location of the event
	NSDate*   eventStartDateTime; // The start date and time of the event
	NSDate*   eventEndDateTime;   // The end date and time of the event
	NSString* eventCategory;      // The type of event
	NSString* eventContactInfo;   // Additional event contact information
	NSString* eventDescription;   // The description of the event
	BOOL      isBookmarked;       // Whether the event data is persistent
	NSInteger numKeywordsMatched; // Number of keywords matched
}

@property int eventID;
@property (nonatomic, retain) NSString* eventHeading;
@property (nonatomic, retain) NSString* eventLocation;
@property (nonatomic, retain) NSDate* eventStartDateTime;
@property (nonatomic, retain) NSDate* eventEndDateTime;
@property (nonatomic, retain) NSString* eventCategory;
@property (nonatomic, retain) NSString* eventContactInfo;
@property (nonatomic, retain) NSString* eventDescription;
@property BOOL isBookmarked;
@property NSInteger numKeywordsMatched;

/**
 * Initialize the SFU event with complete event details.
 *
 * @param identifier     the event identifier
 * @param heading        the title of the event
 * @param location       the location of the event
 * @param startDateTime  the starting date and time of the event
 * @param endDateTime    the ending date and time of the event
 * @param category       the type of event
 * @param contactInfo    additional event contact information
 * @param description    the description of the event
 * @param bookmarked     whether the event data is persistent
 * @return               the initialized SFUEvent
 */
- (id) initWithDetails:(int)identifier 
			   heading:(NSString*)heading 
			  location:(NSString*)location 
		 startDateTime:(NSDate*)startDateTime 
		   endDateTime:(NSDate*)endDateTime 
			  category:(NSString*)category 
		   contactInfo:(NSString*)contactInfo 
		   description:(NSString*)description 
		  isBookmarked:(BOOL)bookmarked;

@end
